package com.mathdroid.model.abilities.specs.sniper;

import com.mathdroid.model.abilities.Ability;
import com.mathdroid.model.enums.EDmgType;

public final class Eviscerate extends Ability {

	/*
	 * Eviscerate has different effects for different "toughness" levels.
	 * Here is the highest level 4 (= "strong") used.
	 */
	
	/**
	 * Generated UID.
	 */
	private static final long serialVersionUID = 964005233951098477L;

	public Eviscerate() {
		this.setName("Eviscerate");
		this.setIconName("disable");
		this.setResource("Energy");
		this.setDirectDamageType(EDmgType.KINETIC);
		this.setUsedForOptimization(false);
		this.setStandardHealthPercentMax(0.236);
		this.setStandardHealthPercentMin(0.216);
		this.setCoefficient(2.26);
		this.setTrainableLevel(28);
	}

	@Override
	public String getDescription() {
		return "Delivers a powerful knife attack to a vulnerable " +
			"target, dealing (?) - (?) kinetic damage to " +
			"weak and standard targets, and " 
			+ this.getMinDirect() + " - " + this.getMaxDirect() 
			+ " kinetic damage to strong targets. Only usable on " 
			+ "incapacitated targets.";
	}
	
	@Override
	public double getMinPeriodic() {
		return 0d;
	}

	@Override
	public double getMaxPeriodic() {
		return 0d;
	}

	@Override
	public double getMinDirect() {
		return		
			this.getCoefficient() 
			* this.getCharStats().getTotalBonusDamageTechForce()
		
			+ this.getStandardHealthPercentMin() 
			* this.getStdDmg();
	}

	@Override
	public double getMaxDirect() {
		return		
			this.getCoefficient() 
			* this.getCharStats().getTotalBonusDamageTechForce()
		
			+ this.getStandardHealthPercentMax() 
			* this.getStdDmg();
	}

}
